home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / flight-of-the-museum.swf / scripts / engine / dynamicObjects / GiantTentacle.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  6.6 KB  |  222 lines

  1. package engine.dynamicObjects
  2. {
  3.    import engine.BitmapLibrary;
  4.    import engine.WorldScene;
  5.    
  6.    public class GiantTentacle
  7.    {
  8.        
  9.       
  10.       public var y:Number = 0;
  11.       
  12.       private var _inOutTimer:Number;
  13.       
  14.       private var _curl:Number = 0;
  15.       
  16.       private var _curlAccel:Number = 0;
  17.       
  18.       public var baseX:Number = 0;
  19.       
  20.       public var baseY:Number = 0;
  21.       
  22.       private var _inOutTimeLength:Number = 250;
  23.       
  24.       public var hiddenX:Number = 0;
  25.       
  26.       public var hiddenY:Number = 0;
  27.       
  28.       public var r:Number = 0;
  29.       
  30.       public var x:Number = 0;
  31.       
  32.       private var _inertia:Number = 0;
  33.       
  34.       private var _curlTarget:Number = 0;
  35.       
  36.       private var _segments:Array;
  37.       
  38.       public function GiantTentacle()
  39.       {
  40.          baseX = 0;
  41.          baseY = 0;
  42.          hiddenX = 0;
  43.          hiddenY = 0;
  44.          x = 0;
  45.          y = 0;
  46.          r = 0;
  47.          _segments = new Array();
  48.          _inertia = 0;
  49.          _curl = 0;
  50.          _curlAccel = 0;
  51.          _curlTarget = 0;
  52.          _inOutTimer = Math.random() * 220;
  53.          _inOutTimeLength = 250;
  54.          super();
  55.       }
  56.       
  57.       protected function getVector(inRadians:Number, inVelocity:Number) : Object
  58.       {
  59.          var vX:Number = NaN;
  60.          var vY:Number = NaN;
  61.          vX = inVelocity * Math.cos(inRadians);
  62.          vY = inVelocity * Math.sin(inRadians);
  63.          return {
  64.             "x":vX,
  65.             "y":vY
  66.          };
  67.       }
  68.       
  69.       public function fStep() : *
  70.       {
  71.          var tx:Number = NaN;
  72.          var ty:Number = NaN;
  73.          var i:* = undefined;
  74.          var seg:* = undefined;
  75.          --_inOutTimer;
  76.          if(_inOutTimer < -_inOutTimeLength)
  77.          {
  78.             _inOutTimer = _inOutTimeLength;
  79.          }
  80.          if(_inOutTimer < 0)
  81.          {
  82.             tx = hiddenX;
  83.             ty = hiddenY;
  84.          }
  85.          else
  86.          {
  87.             tx = baseX;
  88.             ty = baseY;
  89.          }
  90.          if(Math.abs(tx - x) > 20 || Math.abs(ty - y) > 20)
  91.          {
  92.             _inOutTimer += 0.5;
  93.             if(_inertia < 0.2)
  94.             {
  95.                _inertia += 0.001;
  96.             }
  97.          }
  98.          else
  99.          {
  100.             _inertia *= 0.85;
  101.          }
  102.          x += (tx - x) * (_inertia * 0.5);
  103.          y += (ty - y) * (_inertia * 0.5);
  104.          _segments[0].segX = x;
  105.          _segments[0].segY = y;
  106.          if(Math.random() < 0.01)
  107.          {
  108.             _curlTarget = Math.random() * 1 - 0.5;
  109.          }
  110.          if(_curlTarget > _curl)
  111.          {
  112.             if(_curlAccel < 0.03)
  113.             {
  114.                _curlAccel += 0.0008;
  115.             }
  116.          }
  117.          if(_curlTarget < _curl)
  118.          {
  119.             if(_curlAccel > -0.03)
  120.             {
  121.                _curlAccel -= 0.0008;
  122.             }
  123.          }
  124.          _curl += _curlAccel;
  125.          for(i = 0; i < _segments.length; i++)
  126.          {
  127.             seg = _segments[i];
  128.             _segments[i].rOffset = _curl * (1 + 0.053 * i);
  129.          }
  130.       }
  131.       
  132.       public function init() : *
  133.       {
  134.          var seg:TentacleSegment = null;
  135.          var i:* = undefined;
  136.          x = hiddenX;
  137.          y = hiddenY;
  138.          _inOutTimeLength = 400;
  139.          _inOutTimer = Math.random() * _inOutTimeLength;
  140.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_01);
  141.          seg.rOffsetBase = r;
  142.          seg.segX = x;
  143.          seg.segY = y;
  144.          _segments.push(seg);
  145.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_02);
  146.          seg.rOffsetBase = r;
  147.          seg.prevSeg = _segments[_segments.length - 1];
  148.          seg.x = seg.prevSeg.x;
  149.          seg.y = seg.prevSeg.y;
  150.          _segments.push(seg);
  151.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_03);
  152.          seg.rOffsetBase = r;
  153.          seg.prevSeg = _segments[_segments.length - 1];
  154.          seg.x = seg.prevSeg.x;
  155.          seg.y = seg.prevSeg.y;
  156.          _segments.push(seg);
  157.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_04);
  158.          seg.rOffsetBase = r;
  159.          seg.prevSeg = _segments[_segments.length - 1];
  160.          seg.x = seg.prevSeg.x;
  161.          seg.y = seg.prevSeg.y;
  162.          _segments.push(seg);
  163.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_05);
  164.          seg.rOffsetBase = r;
  165.          seg.prevSeg = _segments[_segments.length - 1];
  166.          seg.x = seg.prevSeg.x;
  167.          seg.y = seg.prevSeg.y;
  168.          _segments.push(seg);
  169.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_06);
  170.          seg.rOffsetBase = r;
  171.          seg.prevSeg = _segments[_segments.length - 1];
  172.          seg.x = seg.prevSeg.x;
  173.          seg.y = seg.prevSeg.y;
  174.          _segments.push(seg);
  175.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_07);
  176.          seg.rOffsetBase = r;
  177.          seg.prevSeg = _segments[_segments.length - 1];
  178.          seg.x = seg.prevSeg.x;
  179.          seg.y = seg.prevSeg.y;
  180.          _segments.push(seg);
  181.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_08);
  182.          seg.rOffsetBase = r;
  183.          seg.prevSeg = _segments[_segments.length - 1];
  184.          seg.x = seg.prevSeg.x;
  185.          seg.y = seg.prevSeg.y;
  186.          _segments.push(seg);
  187.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_09);
  188.          seg.rOffsetBase = r;
  189.          seg.prevSeg = _segments[_segments.length - 1];
  190.          seg.x = seg.prevSeg.x;
  191.          seg.y = seg.prevSeg.y;
  192.          _segments.push(seg);
  193.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_10);
  194.          seg.rOffsetBase = r;
  195.          seg.prevSeg = _segments[_segments.length - 1];
  196.          seg.x = seg.prevSeg.x;
  197.          seg.y = seg.prevSeg.y;
  198.          _segments.push(seg);
  199.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_11);
  200.          seg.rOffsetBase = r;
  201.          seg.prevSeg = _segments[_segments.length - 1];
  202.          seg.x = seg.prevSeg.x;
  203.          seg.y = seg.prevSeg.y;
  204.          _segments.push(seg);
  205.          seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_12);
  206.          seg.rOffsetBase = r;
  207.          seg.prevSeg = _segments[_segments.length - 1];
  208.          seg.x = seg.prevSeg.x;
  209.          seg.y = seg.prevSeg.y;
  210.          _segments.push(seg);
  211.          for(i = 0; i < _segments.length; i++)
  212.          {
  213.             WorldScene.Instance.addGPObject(_segments[i]);
  214.             _segments[i].segNum = i + 1;
  215.             _segments[i].rOffsetRand = Math.random() * 1.5 - 0.7;
  216.          }
  217.          _curlTarget = Math.random() * 1.5 - 0.75;
  218.          _segments[0].tentacleR = r;
  219.       }
  220.    }
  221. }
  222.